package oo.nandian.chuandi;

public class ValueChuanDi {


    public static void main(String[] args) {
        // 基础类型
        int a = 1;
        int b = 2;
        swap(a, b);
        System.out.println(a);  // 1
        System.out.println(b);  // 2

        // 引用类型  拷贝了引用地址
        String s1 = new String("a");
        edit(s1);
        System.out.println(s1); // a

        Student s2 = new Student("zjr");
        edit(s2);
        System.out.println(s2.getName()); // zjr

        // 引用类型  修改内部状态
        edit1(s2);
        System.out.println(s2.getName()); // cxl
    }

    private static void edit1(Student s2) {
        System.out.println("=======方法内======");
        s2.setName("cxl");
        System.out.println(s2.getName());
        System.out.println("=======方法内======");
    }

    // 在方法内改变引用指向, 并不会影响原有指向
    private static void edit(Student s2) {
        System.out.println("=======方法内======");
        s2 = new Student("cxl");
        System.out.println("s2 = " + s2.getName());
        System.out.println("=======方法内======");
    }

    // 在方法内改变引用指向, 并不会影响原有指向
    private static void edit(String s1) {
        System.out.println("=======方法内======");
        s1 = new String("b");  // b
        System.out.println(s1);
        System.out.println("=======方法内======");
    }

    private static void swap(int a, int b) {
        int c = 0;
        c = a;
        a = b;
        b = c;
        System.out.println("=======方法内======");
        System.out.println(a);
        System.out.println(b);
        System.out.println("=======方法内======");
    }
}
